package controllo;

import grafica.ListaOstacoli;
import grafica.RettangoloBase;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import utils.BasicFileReader;
import vista.AlertDialog;

import modulo.Giocatore;
import modulo.ProxyListaGiocatori;


public class MuoviControllore implements MouseListener, MouseMotionListener,
		KeyListener {
	private AlertDialog alert;
	private ListaOstacoli ostacoli;
	private ProxyListaGiocatori giocatori;
	public MuoviControllore(ListaOstacoli ostacoli,ProxyListaGiocatori lista) {
		super();
		this.ostacoli=ostacoli;
		this.giocatori=lista;
	}
	public MuoviControllore(ListaOstacoli ostacoli,ProxyListaGiocatori lista,AlertDialog alert) {
		super();
		this.ostacoli=ostacoli;
		this.giocatori=lista;
		this.alert=alert;
	}
	@Override
	public void keyPressed(KeyEvent e) {
	

	}

	@Override
	public void keyTyped(KeyEvent e) {
		Giocatore istanza=giocatori.getElencoGiocatori()[0];
		char lettera = e.getKeyChar();
		int Y=istanza.getY();
		int X=istanza.getX();
		if (lettera == 'w'&istanza.getY()>0) {
			Y--;
			//istanza.setY(Y);
		}
		if (lettera == 's'&istanza.getY()<517) {
			Y++;
			//istanza.setY(Y);
		}
		if (lettera == 'd'&istanza.getX()<748) {
			X++;
		//	istanza.setX(X);
		}
		if (lettera == 'a'&istanza.getX()>0) {
			X --;
			//istanza.setX(X);
		}
		if(lettera=='i'||lettera=='I'){
			String temp = "";
			String a = "";
			BasicFileReader reader = new BasicFileReader("src/infoGioco");
			 while ((temp = reader.readLine()) != null) {
				 a += temp + "\n";
				 }
			alert.SetText(a);
			alert.setChiudiFinestra(false);
			alert.setVisible(true);
		}
		if(X>25&&Y>25&&ostacoli.ControlloPosizioneValida(new RettangoloBase(X-25, Y-25, 50, 50))&&giocatori.controlloPosizioneValida(new RettangoloBase(X-25, Y-25, 50, 50))){
			istanza.setX(X);
			istanza.setY(Y);
		}
		//System.out.println("y: "+Y);
		//System.out.println("x:" +X);
		//System.out.println(Y);
	}

	@Override
	public void keyReleased(KeyEvent e) {

	}

	@Override
	public void mouseClicked(MouseEvent arg0) {
	}

	@Override
	public void mouseEntered(MouseEvent arg0) {
	}

	@Override
	public void mouseExited(MouseEvent arg0) {
	}

	@Override
	public void mouseMoved(MouseEvent arg0) {

	}
	@Override
	public void mousePressed(MouseEvent arg0) {
/*
		int xM = arg0.getX();
		int yM = arg0.getY();

		int x = istanza.getX();
		int y = istanza.getY();
		int r = 50;

		if ((x - xM) * (x - xM) + (y - yM) * (y - yM) <= r * r) {
			dragging = true;
		} else {
			dragging = false;
		}
		oldX = x;
		oldY = y;
		oldXM = xM;
		oldYM = yM;*/
	}

	@Override
	public void mouseDragged(MouseEvent arg0) {
		/*if (dragging) {
			int xM = arg0.getX();
			int yM = arg0.getY();
			istanza.setX(oldX + (xM - oldXM));
			istanza.setY(oldY + (yM - oldYM));
		}*/

	}

	@Override
	public void mouseReleased(MouseEvent arg0) {
		//dragging = false;

	}

}
